package com.micro.frog.rbac.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.micro.frog.common.base.PageRes;
import com.micro.frog.common.base.Result;
import com.micro.frog.rbac.entity.UserDO;
import com.micro.frog.rbac.vo.UserVO;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author :  ljh
 * @date : 2018/4/10
 **/
public interface UserService extends IService<UserDO> {

    /**
     * 验证是否已登录
     *
     * @param request .
     * @return true|false
     */
    boolean hasLogin(HttpServletRequest request);

    /**
     * 登录
     *
     * @param loginName 登录名
     * @param password  密码
     * @param request   .
     * @param response  .
     * @return 登录结果
     */
    Result login(String loginName, String password, HttpServletRequest request, HttpServletResponse response);

    /**
     * 条件查询【不分页】
     *
     * @param query 条件
     * @return 列表
     */
    List<UserDO> queryList(UserDO query);

    /**
     * 条件查询【分页】
     *
     * @param query    条件
     * @param pageNum  页码
     * @param pageSize 每页条数
     * @return 结果
     */
    Result<PageRes<UserDO>> queryPage(UserDO query, Integer pageNum, Integer pageSize);

    /**
     * 添加用户
     *
     * @param user 用户
     * @return 结果
     */
    Result add(UserVO user);

    /**
     * 删除用户
     *
     * @param id 主键
     * @return 结果
     */
    boolean delete(Long id);

    /**
     * 修改用户
     *
     * @param user 用户
     * @return 结果
     */
    Result update(UserVO user);

    /**
     * 修改用户状态
     *
     * @param user 用户
     * @return 结果
     */
    Result updateStatus(UserDO user);
}
